A protein molecule spontaneously adopts its native three-demensional conformation under physiological conditions in consequence of an exquisite stereochemical code. The expression of this code that results in a transition from a denatured state to the native state is called protein folding. Proteins in vivo will assume the same conformations as proteins in vitro in many if not in all instances; and this experimental finding suggests to us that folding is a biophysical problem. Our principal goal is to elucidate the stereochemical code that governs protein folding and use it to formulate a practical folding algorithm. The approach we have been pursuing is coupled to a curriculum of structural analysis showing that the problem can be naturally simplified by dividing it into smaller, quasi-independent parts. Candidates for independent treatments are called domains or folding units; these are contiguous-chain regions in proteins with folded structures that are both compact and spatially distinct. The problem of predicting the correct fit between segments that are known to interact in the native molecule is called the docking problem. Alternatively stated, the docking problem asks how the variegated molecular surface of a folding unit explores other complementary surfaces, reliably recognizing the native ones while rejecting metastable traps. An approach to the docking problem is proposed based upon a novel, all atom representation of the structure, called the striated surface representation. Specific aims to be achieved include developing and calibrating an algorithm to dock rigid units of structure such as helices and strands that are represented in this fashion. The algorithm will then be applied to the folding of proteins of known structure, to the assembly of hemoglobin subunits into the tetramer, and to the association of trypsin with trypsin inhibitor.